package br.com.ss.seguranca.model.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.com.ss.seguranca.model.entity.Usuario;

@Component
public class UsuarioDAO {

	@PersistenceContext
	private EntityManager entityManager;

	@Transactional
	public void save(Usuario usuario) {
		entityManager.persist(usuario);
	}

	@Transactional
	public void merge(Usuario usuario) {
		entityManager.merge(usuario);
	}

	@Transactional
	public void remove(Usuario usuario) {
		Usuario entity = entityManager.merge(usuario);
		entityManager.remove(entity);
	}

	@SuppressWarnings("unchecked")
	public List<Usuario> list() {

		return entityManager.createQuery("select t from Usuario t")
				.getResultList();
	}

	@SuppressWarnings("unchecked")
	public Usuario login(Usuario usuario) {
		System.out.println(usuario.getCpf());
		System.out.println(usuario.getSenha());

		Query query = entityManager.createQuery(
				"from Usuario o where o.cpf =:cpf and o.senha =:senha ",
				Usuario.class);
		query.setParameter("cpf", usuario.getCpf());
		query.setParameter("senha", usuario.getSenha());

		return  (Usuario) query.getSingleResult();
	}

}
